/*
 * Filename:    CalculationKpiDAO.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014年10月15日
 */
package com.paic.mhis.hcpms.quota.calculationreport.calculationkpi.intergration.dao;

import java.util.List;
import java.util.Map;

import com.paic.mhis.hcpms.quota.calculationreport.calculationkpi.dto.CalculationKpiParmDTO;
import com.paic.mhis.hcpms.quota.calculationreport.calculationkpi.dto.KpiBaseFormulaDTO;
import com.paic.mhis.hcpms.quota.calculationreport.calculationkpi.dto.KpiCalculationOtherDTO;
import com.paic.mhis.hcpms.quota.calculationreport.calculationkpi.dto.KpiCalculationResultDTO;

public interface CalculationKpiDAO {

	List<KpiBaseFormulaDTO> findKpiCodeAndFormualList(String calType);

	List<Map<String, Object>> querySociationData(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryGradeData(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryCategoryData(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryMedicalData(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryDepartData(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryDoctorData(CalculationKpiParmDTO dto);

	void insertSociationKpiData(List<KpiCalculationResultDTO> sociationList);

	void insertGradeKpiData(List<KpiCalculationResultDTO> sociationList);

	void insertCategoryKpiData(List<KpiCalculationResultDTO> sociationList);

	void insertMedicalKpiData(List<KpiCalculationResultDTO> sociationList);

	void insertDepartKpiData(List<KpiCalculationResultDTO> sociationList);

	void insertDoctorKpiData(List<KpiCalculationResultDTO> sociationList);

	void calculationKpiRatio(CalculationKpiParmDTO dto);

	void calculationKpiAdvance(KpiCalculationOtherDTO dto);

	int queryMedicalTotalPage(CalculationKpiParmDTO dto);

	int queryDepartTotalPage(CalculationKpiParmDTO dto);

	int queryDoctorTotalPage(CalculationKpiParmDTO dto);

	List<KpiCalculationResultDTO> selectMedOrgKghs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDeptKghs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDocTtorKghs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectGradeKghs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectCateKghs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectSociaTionKghs(KpiCalculationOtherDTO dto);

	List<Map<String, Object>> querySociationKpi(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryGradeKpi(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryCateKpi(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryMedorgKpi(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryDeptKpi(CalculationKpiParmDTO dto);

	List<Map<String, Object>> queryDoctorKpi(CalculationKpiParmDTO dto);

	List<KpiCalculationResultDTO> selectMedOrgJyrs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDeptJyrs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDocTtorJyrs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectGradeJyrs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectCateJyrs(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectSociaTionJyrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectSociaTionYsrsTjqrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectMedOrgYsrsTjqrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectDeptYsrsTjqrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectDocTtorYsrsTjqrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectCateYsrsTjqrs(KpiCalculationOtherDTO dto);

	public abstract List<KpiCalculationResultDTO> selectGradeYsrsTjqrs(KpiCalculationOtherDTO dto);

	// ==================================
	/**
	 * 统计医院维度就诊表就诊编号数目
	 * 
	 * @return
	 */
	List<KpiCalculationResultDTO> selectMedicalVisitCount(KpiCalculationOtherDTO dto);

	/**
	 * 统计医院维度病案表就诊编号数目
	 * 
	 * @return
	 */
	List<KpiCalculationResultDTO> selectMedlPageCount(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDiagnoseNoDescCount(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDiagnoseNoCount(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectDetailProjectCount(KpiCalculationOtherDTO dto);

	List<KpiCalculationResultDTO> selectThreeProjectCount(KpiCalculationOtherDTO dto);

	int queryDeptKpiPage(CalculationKpiParmDTO dto);

	int queryDoctorKpiPage(CalculationKpiParmDTO dto);
}